#include <iostream>
#include <cstring>
#include <algorithm>
using namespace std;
int output(const int*a,const int*b,int n,const int*c){
    int result=0;
    int *num = new int[n];
    int t=a[0]/b[c[0]-1];
    int sum=0;
    int nn=n-1;
    for(int i=0;i<n;i++){
        num[i]=t-i;
//        cout<<"num"<<i<<":"<<num[i]<<endl;
    }

    while(num[0]!=0){
        sum=0;
        for(int i=0;i<n;i++){
            sum+=num[i]*b[c[i]-1];
        }
//        cout<<"sum:"<<sum<<endl;
        if(sum==a[0]){
            result++;
        }
        for(int i=0;i<n;i++){
            if(num[i]==0){
                num[i-1]--;
                nn=i;
                for(int j=i;j<n;j++){
                    num[j]=num[j-1]-1;
                    if(num[j]<=0){
                        num[j]=0;
                    }
                }
                break;
            }
        }
        if(num[nn]<=0)num[nn]=0;
        else num[nn]--;
//        cout<<"num"<<nn<<":"<<num[nn]<<endl;
//        cout<<"num[0]:"<<num[0]<<endl;
    }
    return result;
}

int mid(int t,int* a,int goal,int*count){
//    cout<<"t:"<<t<<",a:"<<*a<<",goal:"<<goal<<",count:"<<*count<<endl;
    if(t<=0||goal<=0)return 0;
    int result =0;
    for(int i=0;i<=t;i++){
        result = *a*i+mid(i-1,a+1,goal-*a*i,count);
        if(result==goal){
            (*count)++;
            return 0;
        }
    }
//    cout<<result<<endl;
    return 0;
}

int output1(const int*a,const int*b,int n,const int*c){
    int *num = new int[n];
    int t=a[0]/b[c[0]-1];
    int *count=new int;
    *count=0;
    for(int i=0;i<n;i++){
        num[i]=b[c[i]-1];
    }
//    int num[4]={3,2,1,1};
//    mid(4,num,14,count);
    mid(t,num,a[0],count);
    return *count;
}


int main(){
    int a[2]={5,2};
    int b[2]={1,2};
    int c[2]={2,1};
//    cout<<output(a,b,2,c)<<endl;
    cout<<output1(a,b,2,c)<<endl;
    return 0;
}